DEFINITIONAL OPERATORS:
copyright (C) 1983 by E. E. Bergmann
definitions in alphabetical (ASCII) order
:
::
*********************************************************
*							*
* PISTOL-Portably Implemented Stack Oriented Language	*
*			Version 2.0			*
* (C) 1983 by	Ernest E. Bergmann			*
*		Physics, Building #16			*
*		Lehigh Univerisity			*
*		Bethlehem, Pa. 18015			*
*							*
* Permission is hereby granted for all reproduction and *
* distribution of this material provided this notice is *
* included.						*
*							*
*********************************************************
:
::
ARRAY		NUM 'NAME -->
		Creates an array whose name was placed on the
		the top of stack. The size of the array (in
		words) is established from the NUM that was on
		stack.  Subsequent invocation of NAME will
		place a pointer to NAME[0] on top of stack.
		For example, to print the value of NAME[17]:
		X> NAME 17 W* + ?

BRANCH		Creates a new "catagory" or "heading" for
		definitions; creates a new vocabulary whose
		name is what has been placed on the stack.
		For example:
		X> 'SPECIAL< BRANCH
		X> SPECIAL<  DEFINITIONS
		X> 'FIRST : ....    ;
		.
		.
		X> > DEFINITIONS  % finish definitions for
		X>		  % SPECIAL< vocabulary

CONSTANT	defines a word whose name is on the top	of
		stack and assigns it the permanent value given
		by the next to top.

VARIABLE	Allocates space in RAM and defines a word whose
		name is on top of stack.  Later, when the name
		is invoked, a pointer to the allocated space is
		pushed on stack.  The variable is initialized
		to the next to top of stack.

 :  ... ;	is used in creating a standard definition.
		It takes the string pointed to by the top of
                stack as the name of the word being defined.
                The body of the word is anything that is placed
                between the ":" and the ";". When the
                definition extends beyond one line of text,
                thesystem displays a prompt that contains a
                ":".  Examples have been provided already in
                the tutorial.

$: ... ;$	is used to create a "macro" definition.  In
                syntax and use its behavior is very similar to
                a standard definition, as described immediately
                above.  However the code that is associated
                with the newly defined word will be compiled
                "in line" when the word is invoked, instead of
                being called.  Its use increases the execution
                speed of any code that uses the word (since the
                is no overhead from a "call"), but the
                resulting code is usually longer; thus we can
                choose our own preference between speed and
                memory space.  It is used to define "perfect
                NOPs", such as in the definition of W* when the
                word size is, in fact, 1. (see the beginning of
                PBASE).
:
